/*
 * Título: gestHora. Aplicación web de gestión de aulas para conservatorios.
 * Alumnos:
 * - Javier Pardo Muñoz. I.T. Informática de Gestión
 * - Antonio Prior Cazorla. I.T. Informática de Gestión
 * Director: Dr. José Raúl Romero Salguero.
 *     
 *  Copyright (C) 2013 Javier Pardo Muñoz / Antonio Prior Cazorla
 *
 *  This program is free software: you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License as published by
 *  the Free Software Foundation, either version 3 of the License, or
 *  (at your option) any later version.
 
 *  This program is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *  GNU General Public License for more details.
 *
 *  You should have received a copy of the GNU General Public License
 *  along with this program.  If not, see <http://www.gnu.org/licenses/>.
 */

function rellenarSelectFiltrarCurso() {
    $('#selectFiltrarCurso').empty();
    $.getJSON("/gestHora/jsp/controllers/solicitudGrupoController.jsp", "tipo=listarCursoPorEspecialidad", function(data) {
        $("<option value='' selected>Seleccione un curso</option>").appendTo("#selectFiltrarCurso");
        $.each(data, function(i, curso) {
            $("<option value= " + curso.idCurso + ">" + curso.nombreCurso + "</option>").appendTo("#selectFiltrarCurso");
        });
    });

}

function rellenarSelectFiltrarAsignatura(idCurso) {
    if (idCurso !== '') {
        limpiarSelectAsignatura();
        $.getJSON("/gestHora/jsp/controllers/solicitudGrupoController.jsp", "tipo=listarAsignaturasPorCurso" + "&idCurso=" + idCurso, function(data) {
            $.each(data, function(i, asignatura) {
                $("<option value= " + asignatura.idAsignatura + ">" + asignatura.nombreAsignatura + "</option>").appendTo("#selectFiltrarAsignatura");
            });
        });
    }
}


function rellenarSelectFiltrarGrupoHorario(id) {
    if (id !== '') {
        limpiarSelectGrupo();
        $.getJSON("/gestHora/jsp/controllers/gestionHorarioController.jsp", "tipo=listarGrupo&id=" + id, function(data) {
            $.each(data, function(i, grupo) {
                $("<option value= " + grupo.idGrupo + ">" + grupo.numeroGrupo + "</option>").appendTo("#selectFiltrarGrupo");
            });
        });
    }
}

function listarHorario(id) {
    limpiarTabla();
    if (id !== '') {
        $.getJSON("/gestHora/jsp/controllers/gestionHorarioController.jsp", "tipo=listarHorario&id=" + id, function(data) {
            //Se crea una newHTML donde crearemos el codigo html que se enviará a la View 
            //Se rellena las tablas
            $.each(data, function(i, grupo) {
                recorrerTablaGrupo(grupo.idHora, grupo.idDia, grupo.numeroGrupo, grupo.duracion, grupo.nombreAsignatura, grupo.nombreProfesor, grupo.apellido1Profesor, grupo.apellido2Profesor);
            });
        });
    }
}

function recorrerTablaAsignatura(dia, hora, grupo, duracion, nombreAsignatura, nombreProfesor, apellido1Profesor, apellido2Profesor) {
    var html;
    $('#tablaView tbody tr').each(function(i) {
        $(this).children("td").each(function(e) {
            if ((i + 1) === hora && (e + 1) === dia) {
                html = $(this).html();
                $(this).html(html + "<span class='tooltipHorario' href='javascript:void(0);'>" + nombreAsignatura + " (Grupo:" + grupo + ")<span> Profesor: " + apellido1Profesor + " " + apellido2Profesor + "," + nombreProfesor + "</span></span>");

                if (duracion > 1) {
                    $(this).attr("rowspan", duracion);
                    for (x = i + 1; x < (i + duracion); x++) {
                        $('#tablaView tr:gt(' + x + ')').find("td").eq(e).hide();
                    }
                }
            }
        });
    });
}

function recorrerTablaGrupo(hora, dia, grupo, duracion, nombreAsignatura, nombreProfesor, apellido1Profesor, apellido2Profesor) {
    var html;
    $('#tablaView tbody tr').each(function(i) {
        $(this).children("td").each(function(e) {
            if ((i + 1) === hora && (e + 1) === dia) {
                html = $(this).html();
                $(this).html(html + "<span class='tooltipHorario' href='javascript:void(0);'>Grupo:" + grupo + "<span>Asignatura: " + nombreAsignatura + "</br>Duración: " + duracion + "h</br>Profesor: " + apellido1Profesor + " " + apellido2Profesor + "," + nombreProfesor + "</span></span><br/>");


                if (duracion > 1) {
                    $(this).attr("rowspan", duracion);
                    for (x = i + 1; x < (i + duracion); x++) {
                        $('#tablaView tr:gt(' + x + ')').find("td").eq(e).hide();
                    }
                }
            }
        });
    });
}

function recorrerTablaSolicitud(dia, hora, numeroGrupo, duracion, nombreAsignatura, idGrupo, idUsuario, prioridad) {
    var html = '';
    $('#tablaGrupo tbody tr').each(function(i) {
        $(this).children("td").each(function(e) {
            if ((i + 1) === hora && (e + 1) === dia) {
                html += $(this).html();
                if (prioridad === 1) {
                    $(this).html(html + "<span class='tooltipHorario' href='javascript:void(0);'>" + nombreAsignatura + " (Grupo:" + numeroGrupo + ")<span>Duración: " + duracion + "h<br/>Prioridad: <select id='selectEditarPrioridad' class='selectPrioridad' name='selectEditarPrioridad' onchange=confirmarEdicion(" + idGrupo + "," + idUsuario + ");><option value='1' selected>1</option><option value='2' >2</option><option value='3' >3</option></select> <a href=javascript:void(0); onclick=confirmar(" + idGrupo + "," + idUsuario + ");><br/> <img src=/gestHora/img/eliminar.png alt=eliminar/></a></span></span><br/>");
                } else {
                    if (prioridad === 2) {
                        $(this).html(html + "<span class='tooltipHorario' href='javascript:void(0);'>" + nombreAsignatura + " (Grupo:" + numeroGrupo + ")<span>Duración: " + duracion + "h<br/>Prioridad: <select id='selectEditarPrioridad' class='selectPrioridad' name='selectEditarPrioridad' onchange=confirmarEdicion(" + idGrupo + "," + idUsuario + ");><option value='1'>1</option><option value='2' selected>2</option><option value='3' >3</option></select> <a href=javascript:void(0); onclick=confirmar(" + idGrupo + "," + idUsuario + ");><br/> <img src=/gestHora/img/eliminar.png alt=eliminar/></a></span></span><br/>");

                    } else {
                        $(this).html(html + "<span class='tooltipHorario' href='javascript:void(0);'>" + nombreAsignatura + " (Grupo:" + numeroGrupo + ")<span>Duración: " + duracion + "h<br/>Prioridad: <select id='selectEditarPrioridad' class='selectPrioridad' name='selectEditarPrioridad' onchange=confirmarEdicion(" + idGrupo + "," + idUsuario + ");><option value='1'>1</option><option value='2' >2</option><option value='3' selected>3</option></select> <a href=javascript:void(0); onclick=confirmar(" + idGrupo + "," + idUsuario + ");><br/> <img src=/gestHora/img/eliminar.png alt=eliminar/></a></span></span><br/>");

                    }
                }
            }
        });
    });
}

function editarSolicitud(idGrupo, idUsuario) {
    $.getJSON("/gestHora/jsp/controllers/solicitudGrupoController.jsp", "tipo=editarSolicitud&idGrupo=" + idGrupo + "&idUsuario=" + idUsuario, function(data) {
        $.each(data, function(i, solicitud) {
            $('#editarIdGrupo').val(idGrupo);
            $('#editarIdUsuario').val(idUsuario);
            for (var e = 1; e <= 3; e++) {
                if (e === solicitud.prioridad) {
                    $("<option value= " + e + " selected>" + e + "</option>").appendTo("#selectEditarPrioridad");
                } else {
                    $("<option value= " + e + " >" + e + "</option>").appendTo("#selectEditarPrioridad");
                }
            }
        });
    });
    $('#formNuevoSolicitudGrupo').fadeOut();
    $('#formEditarSolicitudGrupo').fadeIn();
}

function recorrerTabla(dia, hora, nombre) {
    var html = '';
    $('#tablaView tbody tr').each(function(i) {
        $(this).children("td").each(function(e) {
            if ((i + 1) === hora && (e + 1) === dia) {
                html += $(this).html();

                $(this).html(html + nombre + "<br/>");

            }
        });
    });
}

function listarHorarioEspecialidad() {
    limpiarTabla();
    $.getJSON("/gestHora/jsp/controllers/solicitudGrupoController.jsp", "tipo=listarHorarioPorEspecialidad", function(data) {
        //Se crea una newHTML donde crearemos el codigo html que se enviará a la View 
        //Se rellena las tablas
        $.each(data, function(i, especialidad) {
            recorrerTabla(especialidad.idDia, especialidad.idHora, especialidad.nombreAsignatura);
        });
    });
}

function listarHorarioCursoEspecialidad() {
    limpiarTabla();
    if ($('#selectFiltrarCurso').val() !== '') {
        var idCurso = $('#selectFiltrarCurso').val();
        $.getJSON("/gestHora/jsp/controllers/gestionHorarioController.jsp", "tipo=listarHorarioEspecialidadCurso&idCurso=" + idCurso, function(data) {
            //Se crea una newHTML donde crearemos el codigo html que se enviará a la View 
            //Se rellena las tablas
            $.each(data, function(i, grupo) {
                recorrerTabla(grupo.idDia, grupo.idHora, grupo.nombreAsignatura);
            });
        });
    }
}

function listarHorarioCursoEspecialidadAsignatura() {
    limpiarTabla();
    if ($('#selectFiltrarCurso').val() !== '' && $('#selectFiltrarAsignatura').val() !== '') {
        var idCurso = $('#selectFiltrarCurso').val();
        var idAsignatura = $('#selectFiltrarAsignatura').val();
        $.getJSON("/gestHora/jsp/controllers/gestionHorarioController.jsp", "tipo=listarHorarioAsignatura&idCurso=" + idCurso + "&idAsignatura=" + idAsignatura, function(data) {
            //Se crea una newHTML donde crearemos el codigo html que se enviará a la View 
            //Se rellena las tablas
            $.each(data, function(i, grupo) {
                recorrerTablaAsignatura(grupo.idDia, grupo.idHora, grupo.numeroGrupo, grupo.duracion, grupo.nombreAsignatura, grupo.nombreProfesor, grupo.apellido1Profesor, grupo.apellido2Profesor);
            });
        });
    }
}

function listarSolicitudesAlumno() {
    limpiarTabla();
    $.getJSON("/gestHora/jsp/controllers/solicitudGrupoController.jsp", "tipo=listarSolicitudes", function(data) {
        $.each(data, function(i, solicitud) {
            recorrerTablaSolicitud(solicitud.idDia, solicitud.idHora, solicitud.numeroGrupo, solicitud.duracion, solicitud.nombreAsignatura, solicitud.idGrupo, solicitud.idAlumno, solicitud.prioridad);
        });
    });
}

function limpiarTabla() {
    var aux = 8;
    $("#tablaView > tbody").empty();
    for (i = 0; i < 13; i++) {
        //A las 15.00h no hay clase
        if (aux !== 15)
            $('#tablaView tbody').append('<tr><th>' + aux + ':00</th><td></td><td></td><td></td><td></td><td></td></tr>');
        aux++;
    }
}

function limpiarTablaGrupo() {
    var aux = 8;
    $("#tablaGrupo > tbody").empty();
    for (i = 0; i < 13; i++) {
        //A las 15.00h no hay clase
        if (aux !== 15)
            $('#tablaGrupo tbody').append('<tr><th>' + aux + ':00</th><td></td><td></td><td></td><td></td><td></td></tr>');
        aux++;
    }
}


function limpiarSelectAsignatura() {
    $('#selectFiltrarAsignatura').empty();
    $("<option value='' selected>Seleccione una asignatura</option>").appendTo("#selectFiltrarAsignatura");
}

function limpiarSelectGrupo() {
    $('#selectFiltrarGrupo').empty();
    $("<option value='' selected>Seleccione un grupo</option>").appendTo("#selectFiltrarGrupo");
}